var app = getApp();
var WxParse = require('../../lib/wxParse/wxParse.js');
var util = require('../../utils/util.js');
var api = require('../../config/api.js');
var user = require('../../utils/user.js');

var isSecondSubmit = false;

Page({
  data: {
    id: 0,
    goods: {},
    attribute: [],
    issueList: [],
    specificationList: [],
    productList: [],
    cartGoodsCount: 0,
    number: 1,
    checkedPic: '',
    checkedSpecText: '规格数量选择',
    tmpSpecText: '请选择规格数量',
    checkedSpecPriceFlag: '',
    checkedSpecPrice: 0,
    priceCoinFlag: '',
    priceCoin: 0,
    remindValue: ['', '', '送'],
    plusFlag: ['', '+', '  '],
    openAttr: false,
    soldout: false,
    disabled: false,
    dis: true,
    text: '\n',
    color: [],
    mobile: '',
    groupDetailId: 0,
    runningFlag: null,
    formId: null,
    orderLeftNum: null
  },

  onPullDownRefresh() {
    wx.showNavigationBarLoading() //在标题栏中显示加载
    wx.hideNavigationBarLoading() //完成停止加载
    wx.stopPullDownRefresh() //停止下拉刷新
  },

  getGoodsInfo: function () {
    let that = this;
    util.request(api.GetBulkGood, {
      id: that.data.id,
      groupId: that.data.groupId
    }).then(function (res) {
      if (res.errno === 0) {

        // 商品规格判断
        let _specificationList = res.data.specificationList
        // 如果仅仅存在一种货品，那么商品页面初始化时默认checked
        if (_specificationList.length == 1) {
          if (_specificationList[0].valueList.length == 1) {
            _specificationList[0].valueList[0].checked = true

            // 如果仅仅存在一种货品，那么商品价格应该和货品价格一致
            // 这里检测一下
            let _productPrice = res.data.productList[0].price;
            let _goodsPrice = res.data.info.retailPrice;
            if (_productPrice != _goodsPrice) {
              console.error('商品数量价格和货品不一致');
            }
            that.setData({
              checkedSpecText: _specificationList[0].valueList[0].value,
              tmpSpecText: '已选择：' + _specificationList[0].valueList[0].value,
            });
          }
        }
        
        that.setData({
          goods: res.data.info,
          checkedPic: res.data.info.picUrl,
          attribute: res.data.attribute,
          issueList: res.data.issue,
          specificationList: res.data.specificationList,
          productList: res.data.productList,
          //积分扣赠标志 1代表扣除 2代表赠送
          checkedSpecPriceFlag: res.data.info.integralFlag,
          //积分
          checkedSpecPrice: res.data.info.integral,
          //爱币扣赠标志 1代表扣除 2代表赠送
          priceCoinFlag: res.data.info.priceFlag,
          //爱币
          priceCoin: res.data.info.retailPrice,
          mobile: res.data.mobile,
          runningFlag: res.data.runningFlag,
          //团购计划中的id
          groupDetailId: res.data.percent.id,
          orderLeftNum: res.data.percent.orderLeftNum
        })
        WxParse.wxParse('goodsDetail', 'html', res.data.info.desc, that)
        // console.log(res.data.mobile)
      }
    });

  },
  clickSkuValue: function (event) {
    let that = this;
    let specName = event.currentTarget.dataset.name;
    let specValueId = event.currentTarget.dataset.valueId;

    //判断是否可以点击

    //TODO 性能优化，可在wx:for中添加index，可以直接获取点击的属性名和属性值，不用循环
    let _specificationList = this.data.specificationList;
    for (let i = 0; i < _specificationList.length; i++) {
      if (_specificationList[i].name === specName) {
        for (let j = 0; j < _specificationList[i].valueList.length; j++) {
          if (_specificationList[i].valueList[j].id == specValueId) {
            //如果已经选中，则反选
            if (_specificationList[i].valueList[j].checked) {
              _specificationList[i].valueList[j].checked = false;
            } else {
              _specificationList[i].valueList[j].checked = true;
            }
          } else {
            _specificationList[i].valueList[j].checked = false;
          }
        }
      }
    }
    this.setData({
      specificationList: _specificationList,
    });
    //重新计算spec改变后的信息
    this.changeSpecInfo();

    //重新计算哪些值不可以点击
  },
  //获取选中的规格信息
  getCheckedSpecValue: function () {
    let checkedValues = [];
    let _specificationList = this.data.specificationList;
    for (let i = 0; i < _specificationList.length; i++) {
      let _checkedObj = {
        name: _specificationList[i].name,
        valueId: 0,
        valueText: ''
      };
      for (let j = 0; j < _specificationList[i].valueList.length; j++) {
        if (_specificationList[i].valueList[j].checked) {
          _checkedObj.valueId = _specificationList[i].valueList[j].id;
          _checkedObj.valueText = _specificationList[i].valueList[j].value;
        }
      }
      checkedValues.push(_checkedObj);
    }

    return checkedValues;
  },
  //根据已选的值，计算其它值的状态
  setSpecValueStatus: function () {

  },
  //判断规格是否选择完整
  isCheckedAllSpec: function () {
    return !this.getCheckedSpecValue().some(function (v) {
      if (v.valueId == 0) {
        return true;
      }
    });
  },
  getCheckedSpecKey: function () {
    let checkedValue = this.getCheckedSpecValue().map(function (v) {
      return v.valueText;
    });

    return checkedValue;
  },
  changeSpecInfo: function () {
    let checkedNameValue = this.getCheckedSpecValue();

    //设置选择的信息
    let checkedValue = checkedNameValue.filter(function (v) {
      if (v.valueId != 0) {
        return true;
      } else {
        return false;
      }
    }).map(function (v) {
      return v.valueText;
    });
    if (checkedValue.length > 0) {
      this.setData({
        tmpSpecText: checkedValue.join('　')
      });
    } else {
      this.setData({
        tmpSpecText: '请选择规格数量'
      });
    }


    if (this.isCheckedAllSpec()) {
      this.setData({
        checkedSpecText: this.data.tmpSpecText
      });

      // 规格所对应的货品选择以后
      let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey());
      if (!checkedProductArray || checkedProductArray.length <= 0) {
        this.setData({
          soldout: true
        });
        console.error('规格所对应货品不存在');
        return;
      }

      let checkedProduct = checkedProductArray[0];
      if (checkedProduct.number > 0) {
        this.setData({
          checkedPic: checkedProduct.url,
          priceCoin: checkedProduct.price,
          priceCoinFlag: checkedProduct.priceFlag,
          checkedSpecPrice: checkedProduct.integral,
          checkedSpecPriceFlag: checkedProduct.integralFlag,
          soldout: false
        });
      } else {
        this.setData({
          checkedSpecPrice: this.data.goods.integral,
          checkedSpecPriceFlag: this.data.goods.integralFlag,
          priceCoin: this.data.goods.price,
          priceCoinFlag: this.data.goods.priceFlag,
          soldout: true
        });
      }

    } else {
      this.setData({
        checkedSpecText: '规格数量选择',
        checkedSpecPrice: this.data.goods.integral,
        checkedSpecPriceFlag: this.data.goods.integralFlag,
        priceCoin: this.data.goods.price,
        priceCoinFlag: this.data.goods.priceFlag,
        soldout: false
      });
    }

  },
  getCheckedProductItem: function (key) {
    return this.data.productList.filter(function (v) {
      if (v.specifications.toString() == key.toString()) {
        return true;
      } else {
        return false;
      }
    });
  },
  onLoad: function (options) {
    // 页面初始化 options为页面跳转所带来的参数
    this.setData({
      id: +options.id,
      groupId: +options.groupId
    });
    this.getGoodsInfo();

  },
  onReady: function () {
    // 页面渲染完成

  },
  onShow: function () {
    // 页面显示
    var that = this;
    
    let cartGoodsCount = 0;
    var arr = wx.getStorageSync('cart')
    for (var i = 0; i < arr.length; i++) {
      cartGoodsCount += arr[i].number
    }
    that.setData({
      cartGoodsCount: cartGoodsCount
    });
  },
  onHide: function () {
    // 页面隐藏

  },
  onUnload: function () {
    // 页面关闭

  },
  switchAttrPop: function () {
    if (this.data.openAttr == false) {
      this.setData({
        openAttr: !this.data.openAttr,
        dis: true
      });
    }
  },
  closeAttr: function () {
    let that = this;
    that.setData({
      openAttr: false,
      disabled: false,
      color: ''
    });
  },
  addCollectOrNot: function () {
    let that = this;
    //添加或是取消收藏
    util.request(api.CollectAddOrDelete, {
      type: 0,
      valueId: this.data.id
    }, "POST")
      .then(function (res) {
        let _res = res;
        if (_res.errno == 0) {
          if (_res.data.type == 'add') {
            that.setData({
              collectImage: that.data.hasCollectImage
            });
          } else {
            that.setData({
              collectImage: that.data.noCollectImage
            });
          }
        } else {
          wx.showToast({
            image: '/static/images/icon_error.png',
            title: _res.errmsg,
            mask: true
          });
        }

      });

  },
  openCartPage: function () {
    wx.switchTab({
      url: '/pages/cart/cart'
    });
  },
  addFast: function () {
    let categoryId = this.data.goods.categoryId
    var pids = app.globalData.memberGoodsNum
    if (pids.indexOf(categoryId) != -1) {
      if (app.globalData.hasLogin == false) {
        wx.navigateTo({
          url: "/pages/auth/login/login"
        });
      } else {

          if (isSecondSubmit == false) {
            isSecondSubmit = true;
            var that = this;
            if (this.data.openAttr == false) {
              //打开规格选择窗口
              this.setData({
                openAttr: !this.data.openAttr,
                disabled: false,
                dis: true,
              });
            } else {
              isSecondSubmit = false;
              //提示选择完整规格
              if (!this.isCheckedAllSpec()) {
                wx.showToast({
                  image: '/static/images/icon_error.png',
                  title: '请选择完整规格'
                });
                this.setData({
                  openAttr: !this.data.openAttr,
                  disabled: false,
                  dis: true,
                });
                return false;
              }
              //根据选中的规格，判断是否有对应的sku信息
              let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey());
              if (!checkedProductArray || checkedProductArray.length <= 0) {
                //找不到对应的product信息，提示没有库存
                wx.showToast({
                  image: '/static/images/icon_error.png',
                  title: '没有库存'
                });
                return false;
              }

              let checkedProduct = checkedProductArray[0];
              //验证库存
              if (checkedProduct.number <= 0) {
                wx.showToast({
                  image: '/static/images/icon_error.png',
                  title: '没有库存'
                });
                return false;
              } else if (checkedProduct.number < this.data.number) {
                wx.showToast({
                  image: '/static/images/icon_error.png',
                  title: '库存不足'
                });
                return false;
              }
              //立即购买
              let data = [];
              var goods = this.data.goods;
              goods.isSelect = false;
              var goodsId = this.data.goods.id;
              //添加的商品数量
              var goodsnumber = this.data.number;
              goods.number = goodsnumber;
              var productId = checkedProduct.id;
              var name = this.data.goods.name;
              goods.productId = productId
              // 积分
              goods.integral = checkedProduct.integral
              goods.retailPrice = checkedProduct.price
              goods.priceFlag = checkedProduct.priceFlag
              goods.goodsName = name;

              goods.specifications = this.data.checkedSpecText
              goods.checked = true
              if (name.length > 22) {
                goods.goodsName = name.substring(0, 22) + '...';
              }
              goods.groupDetailId = this.data.groupDetailId
              wx.setStorageSync('cartflag', 1);
              data.push(goods);
              wx.setStorageSync('cartOne', data)
              try {
                // wx.setStorageSync('cartId', res.data);
                if (app.globalData.hasLogin) {
                  if (this.data.mobile == "" || this.data.mobile == undefined) {
                    wx.redirectTo({
                      url: "/pages/auth/bindMobile/bindMobile"
                    });
                  } else {
                    util.request(api.FormidCreate, { formId: this.data.formId }).then(res => {
                      wx.navigateTo({
                        url: '/pages/bulkCheckout/bulkCheckout'
                      })
                    })
                  }
                } else {
                  wx.navigateTo({
                    url: "/pages/auth/login/login"
                  });
                }
              } catch (e) { }
            }
            isSecondSubmit = false;
          }
      }

    } else {

      if (isSecondSubmit == false) {
        isSecondSubmit = true;
        var that = this;
        if (this.data.openAttr == false) {
          //打开规格选择窗口
          this.setData({
            openAttr: !this.data.openAttr,
            disabled: false,
            dis: true,
          });
        } else {
          isSecondSubmit = false;
          //提示选择完整规格
          if (!this.isCheckedAllSpec()) {
            wx.showToast({
              image: '/static/images/icon_error.png',
              title: '请选择完整规格'
            });
            this.setData({
              openAttr: !this.data.openAttr,
              disabled: false,
              dis: true,
            });
            return false;
          }

          //根据选中的规格，判断是否有对应的sku信息
          let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey());
          if (!checkedProductArray || checkedProductArray.length <= 0) {
            //找不到对应的product信息，提示没有库存
            wx.showToast({
              image: '/static/images/icon_error.png',
              title: '没有库存'
            });
            return false;
          }

          let checkedProduct = checkedProductArray[0];
          //验证库存
          if (checkedProduct.number <= 0) {
            wx.showToast({
              image: '/static/images/icon_error.png',
              title: '没有库存'
            });
            return false;
          } else if (checkedProduct.number < this.data.number) {
            wx.showToast({
              image: '/static/images/icon_error.png',
              title: '库存不足'
            });
            return false;
          }

          //立即购买
          let data = [];
          var goods = this.data.goods;
          goods.isSelect = false;
          var goodsId = this.data.goods.id;
          //添加的商品数量
          var goodsnumber = this.data.number;
          goods.number = goodsnumber;
          var productId = checkedProduct.id;
          var name = this.data.goods.name;
          goods.productId = productId
          // 积分
          goods.integral = checkedProduct.integral
          goods.retailPrice = checkedProduct.price
          goods.priceFlag = checkedProduct.priceFlag
          goods.goodsName = name;

          goods.specifications = this.data.checkedSpecText
          goods.checked = true
          if (name.length > 22) {
            goods.goodsName = name.substring(0, 22) + '...';
          }
          goods.groupDetailId = this.data.groupDetailId

          wx.setStorageSync('cartflag', 1);
          data.push(goods);
          wx.setStorageSync('cartOne', data)
          try {
            // wx.setStorageSync('cartId', res.data);
            if (app.globalData.hasLogin) {
              if (this.data.mobile == "" || this.data.mobile == undefined) {
                wx.redirectTo({
                  url: "/pages/auth/bindMobile/bindMobile"
                });
              } else {
                // this.submitInfo()
                // wx.navigateTo({
                //   url: '/pages/bulkCheckout/bulkCheckout'
                // })
                util.request(api.FormidCreate, { formId: this.data.formId }).then(res => {
                  wx.navigateTo({
                    url: '/pages/bulkCheckout/bulkCheckout'
                  })
                })
              }
            } else {
              wx.navigateTo({
                url: "/pages/auth/login/login"
              });
            }
          } catch (e) { }
        }
        isSecondSubmit = false;
      }
    }
  },
  goLogin() {
    wx.navigateTo({
      url: "/pages/auth/login/login"
    });
  },
 
  cutNumber: function () {
    this.setData({
      number: (this.data.number - 1 > 1) ? this.data.number - 1 : 1
    });
  },
  addNumber: function () {
    this.setData({
      number: this.data.number < this.data.orderLeftNum ? (this.data.number  + 1) : this.data.number
    });
  },
  changeNumber: function (event) {
    this.setData({
      number: parseInt(event.detail.value) > 1 ? parseInt(event.detail.value) : 1
    });
  },
  submitInfo: function (e) {
    util.request(api.FormidCreate, { formId: e.detail.formId })
  }
})